package com.demo.chapter5stream2;

import java.util.stream.Stream;

//无限流，必须配合limit，因为流是无界的。
public class InfiniteFlow {

	public static void demo(){
		//iterate：根据前一个值，依次计算后面的值
		Stream.iterate(0, n -> n + 2).limit(10).forEach(System.out::print);
	}

	public static void demo2(){
		//斐波那契数列(0,1),(1,1),(1,2),(2,3),(3,5),(5,8)
		Stream.iterate(new int[]{0, 1}, arr -> new int[]{arr[1], arr[0] + arr[1]})
			.limit(20)
			.map(arr2 -> arr2[0])
			.forEach(System.out::println);
	}

	public static void demo3(){
		//generate：应用Supplier<T>生成新值
		Stream.generate(Math::random).limit(5).forEach(System.out::println);
	}

	public static void main(String[] args) {
		demo();
		demo2();
	}

}
